/**
 * 冒泡排序
 * @param {Array} arr - 乱序数组
 */
function BubbleSort(arr){
    //优化：如果第一次冒泡后都没发生交换，说明已经有序
    let isSwapped = false
    //1.外层循环：控制冒泡的次数
    for(let i=0;i<arr.length-1;i++){
        //2.内层循环：控制比较的次数
        for(let j=0;j<arr.length-1-i;j++){
            if(arr[j]>arr[j+1]){
                let temp=arr[j]
                arr[j]=arr[j+1]
                arr[j+1]=temp
                isSwapped=true
            }
        }
        //每一次冒泡后，如果没有发生交换，则说明已经有序
        if(!isSwapped){
            console.log(`第 ${i}次，已经有序`);
            break;
        }
        //重置交换状态
        isSwapped=false
    }
}

let arr=[]
for(let i=0;i<10;i++){
    arr.push(Math.floor(Math.random()*100))
}
console.log(arr);
BubbleSort(arr)
console.log(arr);
// console.log(BubbleSort(arr));